package com.ztesoft.web.baseconfig.db.dao.mapper;

import java.util.List;

import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.session.RowBounds;

import com.ztesoft.core.common.Page;
import com.ztesoft.web.baseconfig.db.arg.DmPlanArg;
import com.ztesoft.web.baseconfig.db.po.DmPlanPO;

public interface IDmPlanMapper {

	List<Integer> countByArg(DmPlanArg arg);

	List<DmPlanPO> selectByArg(DmPlanArg arg);

	DmPlanPO selectByPrimaryKey(Integer id);
	
	DmPlanPO selectByDmStrategyId(Integer id);

	DmPlanPO selectByTableName(String tableName);

	/**
	 * 查询是否存在相同名称的计划
	 * 
	 * @param planName
	 * @return
	 */
	int selectByPlanName(String planName);

	// 判断该NodeId是否已经被创建
	int selectByNodeId(Integer moduleId);

	List<DmPlanPO> selectByArgAndPage(DmPlanArg arg, RowBounds rowBound);
	
	List<DmPlanPO> selectByArgAndPageForFile(DmPlanPO record, RowBounds rowBound);

	// 草稿箱查询
	List<DmPlanPO> selectByArgAndPageDraft(DmPlanArg arg, RowBounds rowBound);

	// 计划维护查询
	List<DmPlanPO> selectByArgAndPageMaint(DmPlanArg arg, RowBounds rowBound);

	int insert(DmPlanPO record);

	int insertSelective(DmPlanPO record);

	int insertBatch(@Param("list") List<DmPlanPO> records);

	int updateByArgSelective(@Param("record") DmPlanPO record, @Param("arg") DmPlanArg arg);

	int updateByArg(@Param("record") DmPlanPO record, @Param("arg") DmPlanArg arg);

	int updateByPrimaryKeySelective(DmPlanPO record);
	int upexpDate(DmPlanPO record);

	int updateForState(DmPlanPO record);

	int updateByPrimaryKey(DmPlanPO record);

	int deleteByArg(DmPlanArg arg);

	// 删除草稿箱，把状态改为00X
	int deleteByPrimaryKey(Integer id);

	// 删除计划维护，把状态改为00X
	int deleteMaint(Integer id);

	List<DmPlanPO> selectByDmPlanAndGroupNbr();

	DmPlanPO selectByExecType(String execType);

	List<DmPlanPO> selectSourceByDmPlanId(Integer dmPlanId);

	DmPlanPO selectOperTypeByDmPlanId(Integer dmPlanId);

}